/**
 * \file genMap.h
 * \brief Generation de carte
 * \author ARTUR Vincent
 * \author LAPERDRIX Pierre
 * \version 1.0
 */

#ifdef WANTDLLEXP
#define DLL _declspec(dllexport)
#define EXTERNC extern "C"
#else
#define DLL
#define EXTERNC
#endif

#include <ctime>
#include <cstdlib>
#include <cstdio>
#include <iostream>

/**
 * \def DESERT
 * Case de type Desert
 */
#define DESERT 0
/**
 * \def MONTAGNE
 * Case de type Montagne
 */
#define MONTAGNE 1

/**
 * \def PLAINE
 * Case de type Plaine
 */
#define PLAINE 2

/**
 * \def DESERTFRUIT
 * Case de type DesertFruit
 */
#define DESERTFRUIT 3

/**
 * \def MONTAGNEFRUIT
 * Case de type MontagneFruit
 */
#define MONTAGNEFRUIT 4

/**
 * \def PLAINEFRUIT
 * Case de type PlaineFruit
 */
#define PLAINEFRUIT 5

/**
 * \def DESERTFER
 * Case de type DesertFer
 */
#define DESERTFER 6

/**
 * \def MONTAGNEFER
 * Case de type MontagneFer
 */
#define MONTAGNEFER 7

/**
 * \def PLAINEFER
 * Case de type PlaineFer
 */
#define PLAINEFER 8





/**
 * \class GenMap
 * \brief Classe gerant la generation des cartes
 */
class DLL GenMap {

public:
	
	/**
	 * \fn GenMap()
	 * \brief Constructeur de GenMap
	 */
	GenMap();

	/**
	 * \fn ~GenMap()
	 * \brief Destructeur de GenMap
	 */
	~GenMap();

	/**
	 * \fn int** genererCarte(int n)
	 * \brief Genere une carte
	 * \param n la taille de la carte
	 * \return un tableau d'entiers representant la matrice de cases de la carte
	 */
	int** genererCarte(int n);


};

/**
 * \fn Combat* GenMap_new()
 * \brief Methode utilisee par la DLL pour creer un nouvel objet de type GenMap
 * \return un pointeur sur un nouvel objet de type GenMap
 */
EXTERNC DLL GenMap* GenMap_new();

/**
 * \fn void GenMap_delete(GenMap* genmap)
 * \brief Methode utilisee par la DLL pour detruire un objet de type GenMap
 * \param genmap un pointeur sur l'objet a detruire
 */
EXTERNC DLL void GenMap_delete(GenMap* genmap);

/**
 * \fn int* GenMap_genererCarte(GenMap* genmap,int n)
 * \brief Methode utilisee par la DLL pour generer une carte
 * \param genmap un pointeur sur un objet de type GenMap
 * \param n la taille de la carte
 * \return un tableau d'entiers representant la matrice de cases de la carte
 */
EXTERNC DLL int** GenMap_genererCarte(GenMap* genmap,int n);